package com.xxc.exam.service

import com.xxc.batis.vo.PageVO
import com.xxc.exam.entity.QuestionEntity
import com.xxc.exam.entity.pojo.Question
import com.xxc.exam.entity.vo.QuestionVO
import com.xxc.batis.qo.PageQO
import com.xxc.batis.service.CrudService
import com.xxc.exam.entity.dto.QuestionBatchDto
import com.xxc.exam.entity.pojo.SelectionQues
import com.xxc.exam.entity.vo.ContestQuesVO
import com.xxc.exam.entity.vo.SelectionQuesVO
import java.math.BigInteger

interface QuestionService : CrudService<Question, BigInteger> {

    /**
     * 分页查询问题
     * @param pageQO 查询对象，当没有condition属性的时候查询全部
     */
    fun findWithPage(pageQO: PageQO<Question>): PageVO<QuestionVO>

    fun delQuestions(questionIds:Array<BigInteger>)

    fun addQuestions(questions:List<QuestionEntity>)

    fun updateQuestion(question:Question)

    /**
     * 批量更新题目的分类和难度
     */
    fun updateQuestions(questions:QuestionBatchDto)

    /**
     * 获取传入分类id的ques各level的数量
     */
    fun countCategoriesQues(categories: List<BigInteger>, id: BigInteger, type: Int):HashMap<Int,Int>

    /**
     * 获取考试题目
     */
    fun getContestQues(id:BigInteger):List<ContestQuesVO>
}